package com.quanxiaoha.xiaohashu.data.align.constant;

/**
 * @author: Jovan
 * @date: 2025/3/29
 * @description:
 */
public class RedisKeyConstants {

    /**
    * 布隆过滤器：日增量变更数据，用户笔记点赞，取消点赞 前缀
    */
    public static final String BLOOM_TODAY_NOTE_LIKE_LIST_KEY = "bloom:dataAlign:note:likes";

    /**
    * 布隆过滤器：日增量变更数据，用户笔记收藏，取消收藏 前缀
    */
    public static final String BLOOM_TODAY_NOTE_COLLECT_LIST_KEY = "bloom:dataAlign:note:collects";

    /**
     * 布隆过滤器：日增量变更数据，用户笔记发布，删除 前缀
     */
    public static final String BLOOM_TODAY_USER_NOTE_OPERATOR_LIST_KEY = "bloom:dataAlign:user:note:operators:";

    /**
    * 布隆过滤器：日增量变更数据，用户关注数 前缀
    */
    public static final String BLOOM_TODAY_USER_FOLLOW_LIST_KEY = "bloom:dataAlign:user:followings:";

    /**
     * 布隆过滤器：日增量变更数据，用户粉丝数 前缀
     */
    public static final String BLOOM_TODAY_USER_FANS_LIST_KEY = "bloom:dataAlign:user:followings:";

    /**
     * Hash Field: 关注总数
     */
    public static final String FIELD_FOLLOWING_TOTAL = "followingTotal";
    /**
     * 用户维度计数 Key 前缀
     */
    private static final String COUNT_USER_KEY_PREFIX = "count:user:";

    /**
    * 构建完整的布隆过滤器：日增量变更数据，用户笔记点赞，取消点赞 KEY
    */
    public static String buildBloomUserNoteLikeListKey(String date){
        return BLOOM_TODAY_NOTE_LIKE_LIST_KEY + date;
    }

    /**
    * 构建完整的布隆过滤器：日增量变更数据，用户笔记收藏，取消收藏 KEY
    */
    public static String buildBloomUserNoteCollectListKey(String date){
        return BLOOM_TODAY_NOTE_COLLECT_LIST_KEY + date;
    }

    /**
     * 构建完整的布隆过滤器：日增量变更数据，用户笔记发布，删除 KEY
     */
    public static String buildBloomUserNoteOperatorListKey(String date){
        return BLOOM_TODAY_USER_NOTE_OPERATOR_LIST_KEY + date;
    }

    /**
     * 构建完整的布隆过滤器：日增量变更数据，用户关注数 KEY
     */
    public static String buildBloomUserFollowListKey(String date){
        return BLOOM_TODAY_USER_FOLLOW_LIST_KEY + date;
    }

    /**
     * 构建完整的布隆过滤器：日增量变更数据，用户粉丝数 KEY
     */
    public static String buildBloomUserFansListKey(String date){
        return BLOOM_TODAY_USER_FANS_LIST_KEY + date;
    }

    /**
     * 构建用户维度计数 Key
     * @param userId 用户 ID
     * @return 返回
     */
    public static String buildCountUserKey(Long userId) {
        return COUNT_USER_KEY_PREFIX + userId;
    }
}
